﻿using System.Linq.Expressions;

namespace EFCoreRepositoryDemo.Repositories
{   
    public interface IRepository<TEntity> where TEntity : class
    {
        // 获取所有实体
        Task<List<TEntity>> GetAllAsync();

        // 根据条件查询
        Task<List<TEntity>> GetByConditionAsync(Expression<Func<TEntity, bool>> predicate);

        // 根据ID获取
        Task<TEntity?> GetByIdAsync(int id);

        // 添加实体
        Task AddAsync(TEntity entity);

        // 更新实体
        void Update(TEntity entity);

        // 删除实体
        void Delete(TEntity entity);

        // 保存更改
        Task SaveChangesAsync();
    }
}
